package exception;

/**
 * throw关键字允许程序主动对外抛出一个异常
 * 通常下列场景会这样做:
 * 1:当前代码片段出现了一个异常，但是该异常不应在当前代码片段中被处理时可以将其
 *   抛出给调用者
 * 2:程序遇到了一个满足语法但是不满足业务场景的情况时可以主动对外抛出一个异常告知
 *   调用者(本案例就是演示这种情况)
 */
public class ThrowDemo {
    public static void main(String[] args){
        Person person = new Person();
//        person.setAge(16);
        /*
            当我们调用一个含有throws声明异常抛出的方法时，编译器要求我们
            必须处理这个异常，而处理方式有两种选择:
            1:主动使用try-catch捕获并处理该异常
            2:可以继续在当前方法上使用throws对外声明该异常的抛出
              这里比如就是在main方法上使用throws继续声明异常的抛出
            具体使用哪种方式处理取决于异常处理的责任制问题
            但是:永远不应该在main方法上使用throws声明异常的抛出
         */
        try {
            person.setAge(10000);
        } catch (IllegalAgeException e) {
            e.printStackTrace();
        }

        System.out.println("此人年龄:"+person.getAge());
    }
}
